Backward compatibility
In the context of telecommunications and computing, a device or technology is said to be backward or downward compatible if it can work with input generated by an older device.[1] If products designed for the new standard can receive, read, view or play older standards or formats, then the product is said to be backward-compatible; examples of such a standard include data formats and communication protocols.
The reverse is forward compatibility, which implies that old devices allow (or are expected to allow) data formats generated by new (or future) devices, perhaps without supporting all new features. A standard supports forward compatibility if older product versions can receive, read, view, or play the new standard.
For example, the introduction of FM stereo transmission allowed backward compatibility since new FM radio receivers could receive monaural signals generated by old transmitters. It also allowed forward compatibility, since old monaural FM radio receivers still could receive a signal from a new transmitter.
In programming languages, backward compatibility refers to the ability of a compiler for version N of the language to accept programs or data that worked under version N - 1.[2] (By this definition, if previous versions (N - 1, N - 2, etc.) were also backward compatible, which is often the case, then, by induction, version N will also accept input that worked under any prior version after, and including, the latest one that was not backward compatible. However, in practice, features are often deprecated and support is dropped in a later release, which is yet thought of as backward compatible.)
In other contexts, a product or a technology is said to be backward compatible when it is able to fully take the place of an older product, by inter-operating with products that were designed for the older product.[3]
A data format is also said to be backward compatible with its predecessor if every message or file that is valid under the old format is also valid, and retains its meaning, under the new.[4]
Description
Backward compatibility is a relationship between two components, rather than being an attribute of just one of them. More generally, a new component is said to be backward compatible if it provides all of the functionality of the old component.
Backward compatibility is the special case of compatibility in which the new component has a direct historical ancestral relationship with the old component. If this special relationship does not exist then it not usually spoken of as "backward" compatibility but is instead just "compatible"—a consistent interface allowing interoperability between components and products that were each developed separately.
In the case of a program that creates document files, a new version of that program ("v2") is said to be backward compatible with the old version of the program ("v1") when it can both read and write documents that work with v1. Everything that v1 could do must also be possible with v2, including saving documents that can be read by v1 (which is something that v1 could do.)
If a newer software version cannot save files that can be read by the older version, it is not backward compatible with the older version, although it may provide an irreversible upgrade capability for the old files. This situation has often been used strategically by software vendors to force customers to purchase upgrades since, over time, the number of data files usable by an old version diminishes at a rate proportional to the number of other customers that have upgraded (assuming that all customers generate files at the same the average rate.)
Levels of compatibility vary. In software, binary compatibility and source compatibility are distinguishable. Binary compatibility means that programs can work correctly with the new version of this library without requiring recompilation. Source compatibility requires recompilation but no changes to the source code.
Many platforms rely on emulation, the simulation of an older platform in software, to achieve backward compatibility.
Bugwards Compatible
If a newer system is attempting to achieve integration with an older system which has known flaws (or "bugs"), then the new system may be referred to as "bugwards-compatible".[5][6][7]
Examples
- The NTSC color broadcast system was engineered by RCA to be backward compatible with black-and-white NTSC television sets.
- Most DVD drives are able to play standard CDs.
- Numerous video game consoles are backward compatible and are able to play the games created for predecessor consoles:
- The Atari 7800 is backward compatible with almost all Atari 2600 games.
- The Game Boy Advance line, except for the Game Boy Micro, is backward compatible with all Game Boy and Game Boy Color games.
- The Nintendo DS and the Nintendo DS Lite are backward compatible with all Game Boy Advance games.
- The Nintendo 3DS is backward compatible with most of the Nintendo DS and Nintendo DSi software. However, the 3DS and its predecessor the DSi lack the Game Boy Advance slot found on the DS and DS Lite, causing certain titles to lose functionality when played on the systems. The Guitar Hero: On Tour series is incompatible with the DSi and 3DS because of this.
- The Wii is backward compatible with all games from the Nintendo GameCube, due to its being based on the PowerPC, the same base as the latter; however, a "Family Edition" model released in North America and Europe in late 2011 removes GameCube support.
- The Wii U will be backward compatible with all games from the Wii.
- The PlayStation 2 is backward compatible with most of the original PlayStation library.
- Initial PlayStation 3 models are backward compatible with most PlayStation and PlayStation 2 games. This is provided by the inclusion of the original Emotion Engine chip that is built inside the PS3. However, subsequent models removed this and the "Graphics Synthesizer" GPU, thus removing support for PS2 titles, but still able to play most original PS games.
- The PS Vita is backward compatible with PSP games, Minis, PlayStation and Neo Geo games downloaded from the PlayStation Store.
- The Xbox 360 is backward compatible with some Xbox games via software emulation.
- Microsoft Windows contains application compatibility shims to make the platform compatible with most software from earlier 32-bit and 16-bit versions (e.g. Civilization (circa 1991, designed for Windows 3.0) running on Windows Vista).
- The Intel versions of Mac OS X from versions 10.4 (Tiger) to 10.6 (Snow Leopard) use Rosetta, a binary translation program that allows applications meant for use on PowerPC Macs to run on Apple systems that use Intel processors. (The newest OS X version, Lion, does not use Rosetta and thus cannot run PowerPC applications.)
- Microsoft Word 2000 was backward compatible with Word 97 because it could read and write files in Word 97 format, with the understanding that features unique to Word 2000 would not appear in Word 97. At the same time, Microsoft Word, Excel, PowerPoint, Access and OneNote, both 2007 and 2010, are also backward compatible with their 97-2003 file formats and features in the same manner.
- Several computer operating systems have various methods of running software originally designed for older versions or other OSs:
- Windows NT and successors have various subsystems to run legacy applications. MS-DOS and Win16 subsystems (only on i386) can run some applications for those platforms, and it has an OS/2 subsystem for running CLI OS/2 applications.
- With the introduction of Windows 7 (Business, Ultimate, or Enterprise editions), Windows XP Mode enables full compatibility with older programs supported under Windows XP via Microsoft Virtual PC.
- The modern Nikon F Mount SLR camera lenses from the late 1970s - present (its design dates back to 1959) can function on the newer Nikon DSLR cameras with some limitations.
- Lenses for the Canon EF mount, introduced with the company's EOS family of film SLRs in 1987 and used to this day on Canon full-frame and APS-H EOS DSLRs, can function on the company's APS-C DSLRs that use the EF-S mount with some limitations.
- PCI Express 2.0 is backward compatible with PCI Express 1.1.
- The IBM 7080 transistorized computer was backward compatible with all models of the IBM 705 vacuum tube computer.
See also
References
- ^ "backward compatible - Computer definition". yourdictionary.com. Archived from the original on 2009-10-18. http://www.webcitation.org/5kcaFJC8g. Retrieved 2009-10-18.
- ^ Michael Kay, XSLT 2.0 Programmer's Reference, Wiley Default, 2004 ISBN 0764569090, 9780764569098
- ^ Jeffrey Zeldman (2006). Designing with Web Standards. Peachpit Press. ISBN 0321385551.
- ^ Bert Bos, "Backwards Compatibility, http://www.w3.org/People/Bos/DesignGuide/compatibility.html
- ^ Keith Dawson, "Jargon Scout", http://tbtf.com/jargon-scout.html#bugwards-compatible
- ^ Tobias Reif, "bugwards compatibility, XHTML, embed", http://tech.groups.yahoo.com/group/svg-developers/message/7176
- ^ "Autoconf 2.13", http://www.gnu.org/s/hello/manual/autoconf/Autoconf-2_002e13.html
External links